Neuplny vysledek joinu

Otázka od: Martin Pisarik

20. 4. 2004 14:16

Ahoj *,

Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene kombinace
Artiklu a Provedeni a ma teda jen 3 fieldy (ID, Provedeni_ID, Artikl_ID)

A ted ten problem!
spojim ty tabulky takto:

SELECT *
FROM AP, Artikl, Provedeni
where Artikl.ID=AP.Artikl_ID
and Provedeni.ID=AP.Provedeni_ID

Vrati mi to ale min zaznamu, nez by melo. Zkoumal jsem to a zjistil jsem
strasnou vec! Od kazdeho Provedeni_ID mi to vrati max 50 zaznamu, takze
pokud by jich tam melo byt vic, tak mi to vrati 50 zaznamu a hotovo. V
dusledku toho je vysledek neuplny a misto 7280 zaznamu dostanu jen 5928.

Zkousel jsem i join ale vysledek stejny.

Vubec nevim cim to je.

Jsou to paradoxove tabulky *.db a pracuju s tim pres BDE.
Ja vim, ja vim, ale rady abych se vykaslal na BDE jsou mi ted k nicemu.
Tohle prece musi fungovat i v BDE ne?

Prosim pomozte!




Odpovedá: Karel Rys

20. 4. 2004 14:17

Martin Pisarik dne 20 Apr 2004 v 15:01:

> Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
> Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene
> kombinace Artiklu a Provedeni a ma teda jen 3 fieldy (ID,
> Provedeni_ID, Artikl_ID)
>
> A ted ten problem!
> spojim ty tabulky takto:
>
> SELECT *
> FROM AP, Artikl, Provedeni
> where Artikl.ID=AP.Artikl_ID
> and Provedeni.ID=AP.Provedeni_ID

A co zkusit

SELECT *, b.*, c.*
FROM AP a
LEFT OUTER JOIN Artikl b on (b.ID=a.Artikl_ID)
LEFT OUTER JOIN Provedeni c on (c.ID=a.Provedeni_ID)

Karel Rys


Odpovedá: Martin Pisarik

20. 4. 2004 14:56

No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to funguje
tak jak ma.
Takze dik moc.
Ale nechapu to.
Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
A nebo nerozumim SQL?



-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Karel Rys
Sent: Tuesday, April 20, 2004 3:11 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu


Martin Pisarik dne 20 Apr 2004 v 15:01:

> Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
> Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene
> kombinace Artiklu a Provedeni a ma teda jen 3 fieldy (ID,
> Provedeni_ID, Artikl_ID)
>
> A ted ten problem!
> spojim ty tabulky takto:
>
> SELECT *
> FROM AP, Artikl, Provedeni
> where Artikl.ID=AP.Artikl_ID
> and Provedeni.ID=AP.Provedeni_ID

A co zkusit

SELECT *, b.*, c.*
FROM AP a
LEFT OUTER JOIN Artikl b on (b.ID=a.Artikl_ID)
LEFT OUTER JOIN Provedeni c on (c.ID=a.Provedeni_ID)

Karel Rys




Odpovedá: Petr Langer

20. 4. 2004 14:57

Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek jak
ti daval ten puvodni SQL dotaz, pak by to bylo jasne.

Petr Langer

----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu


> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
> zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
> nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
> A nebo nerozumim SQL?


Odpovedá: Martin Pisarik

20. 4. 2004 15:33

INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne jako select ...
where klauzule.
Tak nevim...

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Petr Langer
Sent: Tuesday, April 20, 2004 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu


Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek jak
ti daval ten puvodni SQL dotaz, pak by to bylo jasne.

Petr Langer

----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu


> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
> zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
> nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
> A nebo nerozumim SQL?




Odpovedá: Ludek ZITA

21. 4. 2004 1:55

On Behalf Of Martin Pisarik

> INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
> Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne
> jako select ... where klauzule. Tak nevim...

Ahoj.
JOIN natvrdo propoji jen existujici klice a vety bez vazby nevypisuje
LEFT JOIN propoji vety a vyise vse.
Co pamatuju tak to vzdy tak bylo.

MySQL s JOINY pracuje az do nejake vyssi verze a IMHO tam prave ma
rozdil od standardu.

Ludek


Odpovedá: Jan Blaha

21. 4. 2004 7:37

Neni nahodou v tabulce AP 50 kombinaci pro?
Mel jsi v joinech spravne nastavene left/right innner/outer join?

Nevim zda je v BDE defaultni left nebo right join, mozna by mohla pomoci
zmena poradi tabulek v selectu.




-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin Pisarik
Sent: Tuesday, April 20, 2004 3:01 PM
To: delphi-l@clexpert.cz
Subject: Neuplny vysledek joinu


Ahoj *,

Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim. Mam 3
tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene kombinace
Artiklu a Provedeni a ma teda jen 3 fieldy (ID, Provedeni_ID, Artikl_ID)

A ted ten problem!
spojim ty tabulky takto:

SELECT *
FROM AP, Artikl, Provedeni
where Artikl.ID=AP.Artikl_ID
and Provedeni.ID=AP.Provedeni_ID

Vrati mi to ale min zaznamu, nez by melo. Zkoumal jsem to a zjistil jsem
strasnou vec! Od kazdeho Provedeni_ID mi to vrati max 50 zaznamu, takze
pokud by jich tam melo byt vic, tak mi to vrati 50 zaznamu a hotovo. V
dusledku toho je vysledek neuplny a misto 7280 zaznamu dostanu jen 5928.

Zkousel jsem i join ale vysledek stejny.

Vubec nevim cim to je.

Jsou to paradoxove tabulky *.db a pracuju s tim pres BDE.
Ja vim, ja vim, ale rady abych se vykaslal na BDE jsou mi ted k nicemu.
Tohle prece musi fungovat i v BDE ne?

Prosim pomozte!





Odpovedá: Jan Blaha

21. 4. 2004 7:34

To je dane jinym primarnim nastavenim DB. Napr. MSSQL ma default left
join a ORACLE right join.
Takze podobny rozdil muze byt i mezi Accessem, mysql a paradoxem. Totez
muze byt pro inner a outer. Jestlize to neuvedes explicitne v dotazu,
tak to databaze doplni defaultne a muze byt problem...

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin Pisarik
Sent: Tuesday, April 20, 2004 4:18 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu


INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne jako select
... where klauzule. Tak nevim...

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Petr Langer
Sent: Tuesday, April 20, 2004 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu


Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek
jak ti daval ten puvodni SQL dotaz, pak by to bylo jasne.

Petr Langer

----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu


> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz
> jsem to zkousel v Accessu, tak to taky fungovalo dobre. V tomto
> pripade mi LEFT nevadi, ale co kdybych mel takova data, ze bych ho
> nemohl pouzit? Co pak? A nebo nerozumim SQL?